﻿using Registro.Compras.Data.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

namespace Registro.Compras.Data.Mappings
{
    public class Base1Map : EntityTypeConfiguration<Base1>
    {
        public Base1Map()
        {
            //table
            ToTable("Base1s");

            //pk
            HasKey(t => t.Id);

            //property
            Property(t => t.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
            Property(t => t.FechaEmision).IsRequired();
            Property(t => t.FechaVencimiento).IsOptional();
            Property(t => t.Tabla10Id).IsRequired();
            Property(t => t.Serie).IsRequired();
            Property(t => t.AnoEmisionDua).IsOptional();
            Property(t => t.N_Comprobante).IsRequired();
            Property(t => t.ProveedorId).IsRequired();
            Property(t => t.BaseImponibleId).IsRequired();
            Property(t => t.DescripcionM).IsOptional();
            Property(t => t.Operacion1).IsOptional();
            Property(t => t.Codigo1).IsOptional();
            Property(t => t.Debe1).IsOptional();
            Property(t => t.Haber1).IsOptional();
            Property(t => t.Codigo2).IsOptional();
            Property(t => t.Debe2).IsOptional();
            Property(t => t.Haber2).IsOptional();
            Property(t => t.Codigo3).IsOptional();
            Property(t => t.Debe3).IsOptional();
            Property(t => t.Haber3).IsOptional();
            Property(t => t.Operacion2).IsOptional();
            Property(t => t.Codigo4).IsOptional();
            Property(t => t.Debe4).IsOptional();
            Property(t => t.Haber4).IsOptional();
            Property(t => t.Codigo5).IsOptional();
            Property(t => t.Debe5).IsOptional();
            Property(t => t.Haber5).IsOptional();
            Property(t => t.Operacion3).IsOptional();
            Property(t => t.Codigo6).IsOptional();
            Property(t => t.Debe6).IsOptional();
            Property(t => t.Haber6).IsOptional();
            Property(t => t.Codigo7).IsOptional();
            Property(t => t.Debe7).IsOptional();
            Property(t => t.Haber7).IsOptional();
            Property(t => t.AdquisicionesNoGravadas).IsOptional();
            Property(t => t.ISC).IsOptional();
            Property(t => t.OtrosTributos).IsOptional();
            Property(t => t.ImporteTotal).IsRequired();
            Property(t => t.PagoNoDomiciliado).IsOptional();
            Property(t => t.CDD_Numero).IsOptional();
            Property(t => t.CDD_FechaEmision).IsOptional();
            Property(t => t.TipodeCambio).IsOptional();
            Property(t => t.EncabezadoId).IsRequired();


            //relationship
            HasRequired(t => t.Tabla10).WithMany(c => c.Base1s).HasForeignKey(t => t.Tabla10Id).WillCascadeOnDelete(false);
            HasRequired(t => t.Proveedor).WithMany(c => c.Base1s).HasForeignKey(t => t.ProveedorId).WillCascadeOnDelete(false);
            HasRequired(t => t.Encabezado).WithMany(c => c.Base1s).HasForeignKey(t => t.EncabezadoId).WillCascadeOnDelete(false);
            HasRequired(t => t.BaseImponible).WithMany(c => c.Base1s).HasForeignKey(t => t.BaseImponibleId).WillCascadeOnDelete(false);


        }
    }
}
